package com.bitoon.basketdudes.jpa;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * PARTIDOS FINALIZADOS DEL ESQUEMA BASKET
 *   NO CONFUNDIR CON LA TABLA PARTIDO DE CATALOGO
 *
 * @author paco FELC 2010
 */
@Entity
@Table(name = "partido", schema = "basket")
@NamedQueries({
    @NamedQuery(name = "Partido.findAll",               query = "SELECT p FROM Partido p"),
    @NamedQuery(name = "Partido.findById",              query = "SELECT p FROM Partido p WHERE p.id = :id"),
    @NamedQuery(name = "Partido.findByJornadaId",       query = "SELECT p FROM Partido p WHERE p.jornadaId = :jornadaId"),
    @NamedQuery(name = "Partido.findByEstado",          query = "SELECT p FROM Partido p WHERE p.estado = :estado"),
    @NamedQuery(name = "Partido.findByFPartido",        query = "SELECT p FROM Partido p WHERE p.fPartido = :fPartido"),
    @NamedQuery(name = "Partido.findByPuntos1",         query = "SELECT p FROM Partido p WHERE p.puntos1 = :puntos1"),
    @NamedQuery(name = "Partido.findByPuntos2",         query = "SELECT p FROM Partido p WHERE p.puntos2 = :puntos2"),
    @NamedQuery(name = "Partido.findByMinutosJugados",  query = "SELECT p FROM Partido p WHERE p.minutosJugados = :minutosJugados"),
    @NamedQuery(name = "Partido.findByTipo",            query = "SELECT p FROM Partido p WHERE p.tipo = :tipo"),
    @NamedQuery(name = "Partido.findUltimos",           query = "SELECT p FROM Partido p WHERE p.fPartido>:fecha order by p.fPartido desc")
})


public class Partido implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Basic(optional = true)
    @Column(name = "jornada_id")
    private int jornadaId;
    @Basic(optional = false)
    @Column(name = "estado")
    private short estado;
    @Column(name = "f_partido")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fPartido;
    @Basic(optional = false)
    @Column(name = "puntos1")
    private short puntos1;
    @Basic(optional = false)
    @Column(name = "puntos2")
    private short puntos2;
    @Basic(optional = false)
    @Column(name = "pos1_ini")
    private int pos1Ini;
    @Basic(optional = false)
    @Column(name = "pos2_ini")
    private int pos2Ini;
    @Basic(optional = false)
    @Column(name = "pos1_fin")
    private int pos1Fin;
    @Basic(optional = false)
    @Column(name = "pos2_fin")
    private int pos2Fin;
    @Basic(optional = false)
    @Column(name = "minutos_jugados")
    private float minutosJugados;
    @Column(name = "minutos")
    private int minutos;
    @Basic(optional = false)
    @Column(name = "tipo")
    private short tipo;
    @Basic(optional = false)
    @Column(name = "t11")
    private short t11;
    @Basic(optional = false)
    @Column(name = "t12")
    private short t12;
    @Basic(optional = false)
    @Column(name = "t13")
    private short t13;
    @Basic(optional = false)
    @Column(name = "t14")
    private short t14;
    @Basic(optional = false)
    @Column(name = "t21")
    private short t21;
    @Basic(optional = false)
    @Column(name = "t22")
    private short t22;
    @Basic(optional = false)
    @Column(name = "t23")
    private short t23;
    @Basic(optional = false)
    @Column(name = "t24")
    private short t24;

    @ManyToOne
    @JoinColumn(name = "equipo_id1", referencedColumnName = "id" )
    private Equipo equipo1;

    @ManyToOne
    @JoinColumn(name = "equipo_id2", referencedColumnName = "id" )
    private Equipo equipo2;



    public Partido() {
    }

    public Partido(Integer id) {
        this.id = id;
    }

    public Partido(Integer id, int jornadaId, int equipoId1, int equipoId2, short estado, short puntos1, short puntos2, int pos1Ini, int pos2Ini, int pos1Fin, int pos2Fin, int minutosJugados, short tipo, short t11, short t12, short t13, short t14, short t21, short t22, short t23, short t24) {
        this.id = id;
        this.jornadaId = jornadaId;
        this.estado = estado;
        this.puntos1 = puntos1;
        this.puntos2 = puntos2;
        this.pos1Ini = pos1Ini;
        this.pos2Ini = pos2Ini;
        this.pos1Fin = pos1Fin;
        this.pos2Fin = pos2Fin;
        this.minutosJugados = minutosJugados;
        this.tipo = tipo;
        this.t11 = t11;
        this.t12 = t12;
        this.t13 = t13;
        this.t14 = t14;
        this.t21 = t21;
        this.t22 = t22;
        this.t23 = t23;
        this.t24 = t24;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public int getJornadaId() {
        return jornadaId;
    }

    public void setJornadaId(int jornadaId) {
        this.jornadaId = jornadaId;
    }

    public int getEquipoId1() {
        return equipo1.getId();
    }

    public int getEquipoId2() {
        return equipo2.getId();
    }

    public Equipo getEquipo1() {
        return equipo1;
    }

    public void setEquipo1(Equipo equipo) {
        this.equipo1 = equipo;
    }

    public Equipo getEquipo2() {
        return equipo2;
    }

    public void setEquipo2(Equipo equipo) {
        this.equipo2 = equipo;
    }

    public short getEstado() {
        return estado;
    }

    public void setEstado(short estado) {
        this.estado = estado;
    }

    public Date getFPartido() {
        return fPartido;
    }

    public void setFPartido(Date fPartido) {
        this.fPartido = fPartido;
    }

    public short getPuntos1() {
        return puntos1;
    }

    public void setPuntos1(short puntos1) {
        this.puntos1 = puntos1;
    }

    public short getPuntos2() {
        return puntos2;
    }

    public void setPuntos2(short puntos2) {
        this.puntos2 = puntos2;
    }

    public int getPos1Ini() {
        return pos1Ini;
    }

    public void setPos1Ini(int pos1Ini) {
        this.pos1Ini = pos1Ini;
    }

    public int getPos2Ini() {
        return pos2Ini;
    }

    public void setPos2Ini(int pos2Ini) {
        this.pos2Ini = pos2Ini;
    }

    public int getPos1Fin() {
        return pos1Fin;
    }

    public void setPos1Fin(int pos1Fin) {
        this.pos1Fin = pos1Fin;
    }

    public int getPos2Fin() {
        return pos2Fin;
    }

    public void setPos2Fin(int pos2Fin) {
        this.pos2Fin = pos2Fin;
    }

    public float getMinutosJugados() {
        return minutosJugados;
    }

    public void setMinutosJugados(float minutosJugados) {
        this.minutosJugados = minutosJugados;
    }

    public int getMinutos() {
        return minutos;
    }

    public void setMinutos(int valor) {
        this.minutos = valor;
    }

    public short getTipo() {
        return tipo;
    }

    public void setTipo(short tipo) {
        this.tipo = tipo;
    }

    public short getT11() {
        return t11;
    }

    public void setT11(short t11) {
        this.t11 = t11;
    }

    public short getT12() {
        return t12;
    }

    public void setT12(short t12) {
        this.t12 = t12;
    }

    public short getT13() {
        return t13;
    }

    public void setT13(short t13) {
        this.t13 = t13;
    }

    public short getT14() {
        return t14;
    }

    public void setT14(short t14) {
        this.t14 = t14;
    }

    public short getT21() {
        return t21;
    }

    public void setT21(short t21) {
        this.t21 = t21;
    }

    public short getT22() {
        return t22;
    }

    public void setT22(short t22) {
        this.t22 = t22;
    }

    public short getT23() {
        return t23;
    }

    public void setT23(short t23) {
        this.t23 = t23;
    }

    public short getT24() {
        return t24;
    }

    public void setT24(short t24) {
        this.t24 = t24;
    }

    public int getEquipo1Id() {
        return equipo1.getId();
    }

    public int getEquipo2Id() {
        return equipo2.getId();
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Partido)) {
            return false;
        }
        Partido other = (Partido) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.bitoon.basketdudes.jpa.Partido[id=" + id + "]";
    }

}
